import timeit

def cpuTime(func_name, mod_name, args, n = 100000, r = 3):
    """ lance r series de n tests
        sur la fonction func_name (dans le module mod_name) 
        et avec args comme arguments
        
        func_name, mod_name et args sont des str
        n et r sont des entiers (defaut: 100000 and 3)
        
        retourne le temps moyen (en sec)
        pour une execution de la fonction dans la meilleure serie
    """
    stmt = mod_name + '.' + func_name + '(' + args + ')'
    setup = 'import ' + mod_name
    t = timeit.Timer(stmt,setup)
    res = min(t.repeat(r,n))
    return res / n